package com.yiqi.zhiyuan.feature.login.contract;

import com.suozhang.framework.entity.bo.UserInfoBo;
import com.suozhang.framework.framework.BasePresenter;
import com.suozhang.framework.framework.BaseView;
import com.yiqi.zhiyuan.entity.dto.RegisterDTO;

import io.reactivex.Observable;

/**
 * @ProjectName: ZhiYuan
 * @Description: java类作用描述
 * @Author: lijuwen
 * @CreateDate: 2019/3/14 10:45
 * @UpdateUser: 更新者
 * @UpdateDate: 2019/3/14 10:45
 * @UpdateRemark: 更新说明
 * @Version: 1.0
 */
public interface LoginContract {

    interface Model {

        /**
         * 登录
         *
         * @param registerDTO
         * @return
         */
        Observable<UserInfoBo> doLogin(RegisterDTO registerDTO);

        /**
         * 登出
         *
         * @param
         * @return
         */
        Observable<UserInfoBo> doLogout();


        /**
         * 发送验证码
         *
         * @param phone
         * @return
         */
        Observable<String> doSendCode(String phone, int type);


    }

    interface View extends BaseView {

        /**
         * 验证码获取成功
         *
         * @param
         */
        void showGetCodeSuccess();

        /**
         * 验证码获取失败
         *
         * @param errorMsg
         */
        void showGetCodeError(String errorMsg);


        /**
         * 登录成功
         */
        void showLoginSuccess();


        /**
         * 登录失败
         */
        void showLoginError(String errorMsg);
    }

    interface Presenter extends BasePresenter {

        /**
         * 发送验证码
         *
         * @param mobile
         */
        void sendCode(String mobile);

        /**
         * 司机密码登录
         *
         * @param mobile    手机号
         * @param password  密码
         * @param loginType 登录类型
         */
        void loginByPwd(String mobile, String password, Integer loginType);

        /**
         * 司机验证码登录
         *
         * @param mobile    手机号
         * @param loginType 登录类型
         * @param vcode     短信验证码
         */
        void loginByCode(String mobile, String vcode, Integer loginType);

        /**
         * 用户登出
         */
        void logout();
    }
}
